#include "memory/TLB.h"
#include "time.h"

uint32_t TLB_read(uint32_t tag) {//读快表
	int i;
	for(i = 0; i <=TLB_SIZE-1; i++) {
		if( tlb[i].tag == tag &&tlb[i].valid) 
        return tlb[i].page;
	}
	return -1;
}


void TLB_write(uint32_t tag, uint32_t page) {//写快表
	int i,z;
	for(i = 0; i <=TLB_SIZE-1; i++) {
		if(tlb[i].valid==false) {//只要有无效块就可以写入
			tlb[i].valid = true;
	
			tlb[i].page = page;
            tlb[i].tag = tag;
			return;
		}
	}
    srand(i);//随机种子
    z=rand();
	i = z % TLB_SIZE;//随机写入
	tlb[i].valid = true;

	tlb[i].page = page;
    tlb[i].tag = tag;

	return;
}

void TLB_init() {//初始化
	int i;
	for(i = 0; i <=TLB_SIZE-1; i++) {
		tlb[i].valid = false;
	}
}